package pois.agenda;

import com.google.java.contract.Invariant;
import com.google.java.contract.Requires;

@Invariant(value={"inicio()!= null","fin() != null","descripcion() != null","inicio().compareTo(fin())<0"})
public interface Evento extends java.lang.Comparable<Evento> {
	
	java.util.Calendar inicio();
		/*
		 * fecha y hora de inicio del evento
		 */
		
	java.util.Calendar fin();
		/*
		 * fecha y hora de finalización del evento
		 */
	
	public boolean esTodoElDia();
		/*
		 * Indica si la actividad ocupará todo el día, en cuyo caso las horas en “inicio”
y “fin” no son relevantes, sólo las fechas
		 */
	
	java.lang.String descripcion();
		/*
		 * Describe el asunto que ocupa
		 */
	
	@Requires(value="otro!=null")
	public int compareTo(Evento otro);
		/*
		 * Permite comparar dos eventos respecto de su momento de inicio
		   Specified by:
				compareTo in interface java.lang.Comparable<Evento>
		   Returns:
				0 si coinciden en la fecha de inicio,
				-1 si la fecha del evento es anterior a la del “otro”,
				1 si la fecha del evento es posterior a la del “otro”

		 */
	
	public java.lang.String toString();
		/*
		 * Proporciona un resumen del evento en una sola línea que contiene la fecha de inicio y
fin en castellano y la descripción. El formato utilizado será como el siguiente:

		POIS: Martes 15 Octubre 2012 10:00:00 a Martes 15 Octubre 2012 11:00:00
		Puente de los Santos: Jueves 1 Noviembre 2012 a Domingo 4 Noviembre 2012

		 */
	
}
